"""
解题思路

这道题目的思路实在括号匹配的思路下有了一定的提高，同时这个思路可以为day6中的239题目作为铺垫。
我们来分析一下这道题目，简单说这道题目就是找到第i天后几天才能遇到比当天气温高的日期，没有则返回0.
栈的后进先出（LIFO）特性使得它能够轻松地处理这种“最近一对元素”的问题。也就是说，我们把元素挨个压入栈内，
而当某个元素可以匹配的时候，就可以将之前栈内元素逐个匹配，达到效果。

"""


class Solution:
    def dailyTemperatures(self, temperatures: List[int]) -> List[int]:
        ans = [0] * len(temperatures)
        stack = []
        for i in range(len(temperatures)):
            while len(stack) > 0 and temperatures[stack[-1]] < temperatures[i]:
                ans[stack[-1]] = i - stack[-1]
                stack.pop()
            stack.append(i)
        return ans